#!/bin/bash

# =============================================
# 客户反馈与工单管理系统数据库一键部署脚本
# 版本: 1.0.0
# 作者: 高级工程师
# 日期: 2025-10-05
# =============================================

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 日志函数
log_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

log_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

log_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

log_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 检查MySQL连接
check_mysql_connection() {
    log_info "检查MySQL连接..."
    if ! mysql -u "$DB_USER" -p"$DB_PASSWORD" -e "SELECT 1;" > /dev/null 2>&1; then
        log_error "MySQL连接失败，请检查用户名和密码"
        exit 1
    fi
    log_success "MySQL连接成功"
}

# 创建数据库
create_database() {
    log_info "创建数据库..."
    mysql -u "$DB_USER" -p"$DB_PASSWORD" < 01_create_database.sql
    if [ $? -eq 0 ]; then
        log_success "数据库创建成功"
    else
        log_error "数据库创建失败"
        exit 1
    fi
}

# 创建表结构
create_tables() {
    log_info "创建表结构..."
    
    # 用户管理表
    log_info "创建用户管理表..."
    mysql -u "$DB_USER" -p"$DB_PASSWORD" feedback_system < 02_user_tables.sql
    
    # 工单管理表
    log_info "创建工单管理表..."
    mysql -u "$DB_USER" -p"$DB_PASSWORD" feedback_system < 03_ticket_tables.sql
    
    # 反馈管理表
    log_info "创建反馈管理表..."
    mysql -u "$DB_USER" -p"$DB_PASSWORD" feedback_system < 04_feedback_tables.sql
    
    # 系统管理表
    log_info "创建系统管理表..."
    mysql -u "$DB_USER" -p"$DB_PASSWORD" feedback_system < 05_system_tables.sql
    
    log_success "表结构创建完成"
}

# 创建索引和约束
create_indexes() {
    log_info "创建索引和约束..."
    mysql -u "$DB_USER" -p"$DB_PASSWORD" feedback_system < 06_indexes_constraints.sql
    if [ $? -eq 0 ]; then
        log_success "索引和约束创建完成"
    else
        log_error "索引和约束创建失败"
        exit 1
    fi
}

# 插入示例数据
insert_sample_data() {
    log_info "插入示例数据..."
    mysql -u "$DB_USER" -p"$DB_PASSWORD" feedback_system < 07_sample_data.sql
    if [ $? -eq 0 ]; then
        log_success "示例数据插入完成"
    else
        log_error "示例数据插入失败"
        exit 1
    fi
}

# 验证部署
verify_deployment() {
    log_info "验证部署结果..."
    
    # 检查表数量
    TABLE_COUNT=$(mysql -u "$DB_USER" -p"$DB_PASSWORD" feedback_system -e "SHOW TABLES;" | wc -l)
    log_info "创建表数量: $((TABLE_COUNT - 1))"
    
    # 检查用户数据
    USER_COUNT=$(mysql -u "$DB_USER" -p"$DB_PASSWORD" feedback_system -e "SELECT COUNT(*) FROM users;" | tail -1)
    log_info "用户数据: $USER_COUNT 条"
    
    # 检查工单数据
    TICKET_COUNT=$(mysql -u "$DB_USER" -p"$DB_PASSWORD" feedback_system -e "SELECT COUNT(*) FROM tickets;" | tail -1)
    log_info "工单数据: $TICKET_COUNT 条"
    
    # 检查反馈数据
    FEEDBACK_COUNT=$(mysql -u "$DB_USER" -p"$DB_PASSWORD" feedback_system -e "SELECT COUNT(*) FROM feedbacks;" | tail -1)
    log_info "反馈数据: $FEEDBACK_COUNT 条"
    
    log_success "部署验证完成"
}

# 显示部署信息
show_deployment_info() {
    echo ""
    echo "============================================="
    echo "🎉 数据库部署完成！"
    echo "============================================="
    echo "数据库名称: feedback_system"
    echo "数据库用户: $DB_USER"
    echo "数据库主机: $DB_HOST"
    echo "数据库端口: $DB_PORT"
    echo ""
    echo "📊 部署统计:"
    echo "- 表数量: $((TABLE_COUNT - 1))"
    echo "- 用户数据: $USER_COUNT 条"
    echo "- 工单数据: $TICKET_COUNT 条"
    echo "- 反馈数据: $FEEDBACK_COUNT 条"
    echo ""
    echo "🔗 连接信息:"
    echo "mysql -h $DB_HOST -P $DB_PORT -u $DB_USER -p feedback_system"
    echo ""
    echo "📚 文档位置: database/README.md"
    echo "============================================="
}

# 主函数
main() {
    echo "============================================="
    echo "🚀 客户反馈与工单管理系统数据库部署"
    echo "============================================="
    echo ""
    
    # 检查参数
    if [ $# -lt 2 ]; then
        echo "用法: $0 <数据库用户> <数据库密码> [数据库主机] [数据库端口]"
        echo "示例: $0 root 123456 localhost 3306"
        exit 1
    fi
    
    # 设置变量
    DB_USER="$1"
    DB_PASSWORD="$2"
    DB_HOST="${3:-localhost}"
    DB_PORT="${4:-3306}"
    
    log_info "开始部署数据库..."
    log_info "数据库用户: $DB_USER"
    log_info "数据库主机: $DB_HOST"
    log_info "数据库端口: $DB_PORT"
    echo ""
    
    # 执行部署步骤
    check_mysql_connection
    create_database
    create_tables
    create_indexes
    insert_sample_data
    verify_deployment
    show_deployment_info
    
    log_success "🎉 数据库部署完成！"
}

# 执行主函数
main "$@"
